#pragma once

#include "IProc.h"
#include "RadProc.h"

class G1680FC104GF_RM692E1 : public Iproc
{
public:
	virtual ~G1680FC104GF_RM692E1() {};

	virtual int DemuraProcess(char* path, double* R, double* G, double* B, char* param);

protected:
	void VirtualBufferInit(ColorDataSrc* color_data_src, DataBuf* data_buf);
	void VirtualBufferFree(DataBuf* _dataBufEx);
	void VirtualBuffersSet(ColorDataSrc* color_data_src, DataBuf* data_buf);

	void InitVirtualBufferEx(unsigned char* cfg, DemuraIn* _demura_in, DemuraOut* _demura_out);
	void FreeVirtualBufferEx(DemuraIn* _demura_in, DemuraOut* _demura_out);

private:
	ColorDataSrc* g_color_data_src = NULL;
	DataBuf* g_data_buf = NULL;
	CompDataResult* g_comp_data_result = NULL;

	DemuraIn* g_demuraIn = NULL;
	DemuraOut* g_demuraOut = NULL;

	HWND A;
	UINT B;
};

//typedef std::shared_ptr<RaydiumProc> RaydiumProcPtr;

